use log::info;
use tokio::signal;
#[cfg(unix)]
use tokio::signal::unix::{signal, SignalKind};

// 等待关闭信号（Ctrl+C 或 SIGTERM），用于 Axum 的优雅关闭
pub async fn wait_for_shutdown() {
    #[cfg(unix)]
    {
        let mut sigterm = signal(SignalKind::terminate()).expect("无法创建SIGTERM信号处理器");
        tokio::select! {
            _ = signal::ctrl_c() => {
                info!("收到 Ctrl+C，正在优雅关闭...");
            }
            _ = sigterm.recv() => {
                info!("收到 SIGTERM，正在优雅关闭...");
            }
        }
    }

    #[cfg(not(unix))]
    {
        signal::ctrl_c().await.expect("无法安装 Ctrl+C 处理器");
        info!("收到 Ctrl+C，正在优雅关闭...");
    }

    info!("服务器正在关闭...");
}